package chapter_02_principle.p2;

import javax.management.relation.RoleList;
import java.util.ArrayList;

/**
 * @author yaochenglong
 * @date 2017/10/19
 */
public class Client {
    public static void main(String[] args) {
        //输出 parent invoke...
        Parent parent = new Parent();
        parent.list(new ArrayList<>());


        /**
         * 子类调用list方法，执行的还是Parent.list()方法
         *  说明：子类的方法没有被执行，反而执行的是父类的list方法
         */
        Children children = new Children();
        children.list(new ArrayList<>());

        /**
         * 子类调用list方法，执行chindren2.list方法
         * 说明：父类的方法参数类型比子类的方法参数类型大的时候，子类调用list方法，会执行子类的方法，
         * 这样的话，父类存在的地方，子类未必可以存在，一旦传入的参数类型更小，则会直接调用子类方法，
         */
        Children2 children2 = new Children2();
        children2.list(new RoleList());

    }
}
